package hehe.aop.base;


import java.util.HashMap;
import java.util.Map;

/**
 * 切面类
 *<B>说明：</B>
 *<pre>
 * 略 类详细描述
 *</pre>
 *<B>示例：</B>
 *<pre>
 *  略
 *</pre>
 *<B>日志：</B>
 *<pre>
 *  略
 *</pre>
 *<B>注意事项：</B>
 *<pre>
 *  略
 *</pre>
 */
public class Aspect
{
    /**
     * 通知点事件
     *<B>说明：</B>
     *<pre>
     * 略
     *</pre>
     */
    protected Map<String,Event> advicesEvent = new HashMap<>();

    /**
     * 方法简单描述
     *<B>说明：</B>
     *<pre>
     * 方法详细描述
     *</pre>
     */
    public void addAdviceBehavior(String advice,Class<? extends Behavior>[] behavior)
    {
        if (this.advicesEvent.containsKey(advice)) {
            this.advicesEvent.get(advice).addBehavior(behavior);
        } else {
            Event event = new Event();
            event.addBehavior(behavior);
            this.advicesEvent.put(advice,event);
        }
    }

    /**
     * advice 是否存在
     *<B>说明：</B>
     *<pre>
     * 略
     *</pre>
     */
    public boolean hasAdvice(String advice)
    {
        if (this.advicesEvent.containsKey(advice)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获取对应的事件
     *<B>说明：</B>
     *<pre>
     * 略
     *</pre>
     */
    public Event getAdviceEvent(String advice)
    {
        return this.advicesEvent.get(advice);
    }

}
